<?php
class AlmacenesController extends AppController {

	var $name = 'Almacenes';
        var $appModule = 'Maestros';
	var $helpers = array('Html', 'Form', 'Number', 'Codigo','GetList');
        var $uses  =array('Almacene','Usuario');

	function index() {
            $q = $this->getBusqueda($this->data['Almacene']['busqueda']);
            $this->set('q', $q);
            $this->Almacene->recursive = 0;
            $conditions['Almacene.empresa_id'] = $this->empresaId();
//            $conditions['Almacene.centro_dist_id'] = $this->centroDistId();
            $conditions['Almacene.activo'] = true;
            if (!empty($q)){
                $conditions['OR'] = array(
                    'Almacene.codigo SIMILAR TO'=>$q,
                    'Almacene.descripcion SIMILAR TO'=>$q,
                );
            }
            $this->paginate['Almacene'] = array(
                'conditions'=>$conditions,
                'order'=>'Almacene.codigo',
                'contain'=>array('CentroDist')
            );
            $almacenes = $this->paginate('Almacene');
            $this->set(compact('almacenes'));
            $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->Session->setFlash(__('Almacen invalido.', true));
			$this->redirect(array('action'=>'index'));
		}
                if (!empty($this->data)){
                    if (array_key_exists('eliminar', $this->params['form'])){ // eliminar
                        foreach ($this->data as $data){
                            if (array_key_exists('id', $data) && $data['id']!=0){
                                $this->Almacene->AlmacenesUsuario->recursive = -1;
                                $us = $this->Almacene->AlmacenesUsuario->read(null, $data['id']);
                                if (!$this->Almacene->AlmacenesUsuario->remove($us['AlmacenesUsuario'])){
                                    $this->Session->setFlash('Se ha producido un error al eliminar el vinculo con el usuario');
                                    break;
                                }
                            }
                        }
                    } else { // adicionar
                        $this->Almacene->AlmacenesUsuario->create();
                        if (!$this->Almacene->AlmacenesUsuario->save($this->data['AlmacenesUsuario'])){
                            $this->Session->setFlash('No se ha podido adicionar el usuario seleccionado');
                        }
                    }
                }
		$this->Almacene->Behaviors->attach('Containable');
		$this->set('almacene', $this->Almacene->find('first', array(
                    'conditions'=>array('Almacene.id'=>$id),
                    'contain'=>array(
                        'CentroDist'=>array(
                            'fields'=>array('id','descripcion','direccion')
                        ),
                        'Usuario'=>array(
                            'fields'=>array('id','usuario'),
                            'Tercero'=>array(
                                'fields'=>array('id','razon_social','direccion')
                            ),
                            'Grupo'=>array(
                                'fields'=>array('id','descripcion')
                            ),
                            'Area'=>array(
                                'fields'=>array('id','descripcion')
                            )
                        )
                    )
                )));
                $this->set('usuarios',$this->Usuario->find('list',array(
                    'fields'=>array('id','usuario'),
                    'conditions'=>array('activo'=>true),
                    'recursive'=>-1
                )));
	}

	function add() {
		if (!empty($this->data)) {
                        $usuario = $this->Session->read('Usuario');
                        $this->data['Almacene']['empresa_id'] = $usuario['Tercero']['empresa_id']; // segun sesion
                        $this->data['Almacene']['activo'] = 1;
                        $this->data['Almacene']['usuario_creacion_id'] = $usuario['id']; // segun sesion
                        $this->data['Almacene']['fecha_creacion'] = 'now()';

			$this->Almacene->create();
			if ($this->Almacene->save($this->data)) {
				$this->Session->setFlash(__('El almacen ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El almacen no ha podido se guardado. Intente nuevamente..', true));
			}
		}
                $this->set('centroDists',$this->Almacene->CentroDist->find('list',
                        array('fields'=>array('CentroDist.id','CentroDist.descripcion'))));

	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash(__('Invalid Almacene', true));
			$this->redirect(array('action'=>'index'));
		}
		if (!empty($this->data)) {
                        $usuario = $this->Session->read('Usuario');
                        $this->data['Almacene']['usuario_modificacion_id'] = $usuario['id']; // segun sesion
                        $this->data['Almacene']['fecha_modificacion'] = 'now()';
			if ($this->Almacene->save($this->data)) {
				$this->Session->setFlash(__('El almacenen ha sido guardado', true));
				$this->redirect(array('action'=>'index'));
			} else {
				$this->Session->setFlash(__('El almacen no ha podido se guardado. Intente nuevamente.', true));
			}
		}
		if (empty($this->data)) {
			$this->data = $this->Almacene->read(null, $id);
		}
                $this->set('centroDists',$this->Almacene->CentroDist->find('list',
                        array('fields'=>array('CentroDist.id','CentroDist.descripcion'))));
	}

	function delete($id = null, $verbose = true) {
                if (!$id) {
                    if ($verbose){
                        $this->Session->setFlash(__('Id de Almacen invalido', true));
                        $this->redirect(array('action'=>'index'));
                    }
                    else return false;
                }
                $usuario = $this->Session->read('Usuario');
                $this->Almacen->recursive = -1;
                $data = $this->Almacen->read(null, $id);
                $data['Almacen']['activo']=0;
                $data['Almacen']['usuario_borrado_id']=$usuario['id'];
                $data['Almacen']['fecha_borrado']='now()';

                if (!$this->Almacen->save($data) && !verbose)
                        return false;
                if ($verbose){
                    $this->Session->setFlash(__('Almacen eliminado', true));
                    $this->redirect(array('action'=>'index'));
                }
                else return true;
	}

    function process(){// procesa anulaciones y eliminaciones en bloque
        $op = isset($this->params['form']['delete'])?'eliminar':'anular';
        $flag = true;
        $i = 0;
        foreach($this->data as $item){
            if ($item['id']!='0'){
                if(isset($this->params['form']['delete'])){ // eliminar
                    $flag = $this->delete($item['Almacene']['id'], false);
                }
                if (!$flag){
                    $data = $this->Almacene->read(null, $item['Almacene']['id']);
                    $this->Session->setFlash(__("Se ha producido un error al $op el Almacen #".$data['Almacene']['codigo'], true));
                    break;
                }
            }
            $i++;
        }
        if ($flag && $i > 0){
            $this->Session->setFlash(__("El proceso de $op Almacen se ha realizado con exito.", true));
        }
        $this->redirect(array('action'=>'index'));
    }

}
?>